// Infinity计算任何数还是Infinity；


/*、
解题方法：
1.递归+备忘录
2.动态规划
3.状态转移

解题思路：
2.动态规划：
[1,2,3] 3
f(0) 0
f(1) = min(f(1-1),f(1-2),f(1-3))+1
f(2) = min(f(2-1)=f(1),f(2-2)=f(0),f(2-3)=f(-1))+1 =》min(f(2),f(2-c...n)+1)
f(3) = min(f(3-1),f(3-2),f(3-3))+1

公式提取：
 res[n]=Math.min(res[n],res[n-coin[i]+1])
 */
function coinchange(coins,amount){
    let res=new Array(amount+1).fill(Infinity);
   res[0]=0;
    for (let index = 1; index <= amount; index++) {
        for(let i=0;i<coins.length;i++){
                // 避免掉res[负数]，也就是避免掉减不尽
                if(index>=coins[i]){
                    res[index]=Math.min(res[index],res[index-coins[i]]+1);
                }
        }
        
    }
    console.log('res',res)
    return res[amount]==Infinity?-1:res[amount];
}

console.log(coinchange([2,4],0))